package org.dynamic.code.layer.n00machine.instruction.generalpurpose.datatransfer;

/**
 * @author alban
 */
public class MOV {

  // *In 64-bit mode, r/m8 can not be encoded to access the following byte registers if a REX prefix is
  // used: AH, BH, CH, DH.
  
    /*
88 /r MOV r/m8,r8 A Valid Valid Move r8 to r/m8.
REX + 88 /r MOV r/m8***,r8*** A Valid N.E. Move r8 to r/m8.
89 /r MOV r/m16,r16 A Valid Valid Move r16 to r/m16.
89 /r MOV r/m32,r32 A Valid Valid Move r32 to r/m32.
REX.W + 89 /r MOV r/m64,r64 A Valid N.E. Move r64 to r/m64.
8A /r MOV r8,r/m8 B Valid Valid Move r/m8 to r8.
REX + 8A /r MOV
r8***,r/m8***
B Valid N.E. Move r/m8 to r8.
8B /r MOV r16,r/m16 B Valid Valid Move r/m16 to r16.
8B /r MOV r32,r/m32 B Valid Valid Move r/m32 to r32.
REX.W + 8B /r MOV r64,r/m64 B Valid N.E. Move r/m64 to r64.
8C /r MOV r/m16,Sreg** A Valid Valid Move segment register to
r/m16.
REX.W + 8C /r MOV r/m64,Sreg** A Valid Valid Move zero extended 16-bit
segment register to r/m64.
8E /r MOV Sreg,r/m16** B Valid Valid Move r/m16 to segment
register.
REX.W + 8E /r MOV Sreg,r/m64** B Valid Valid Move lower 16 bits of
r/m64 to segment register.
A0 MOV AL,moffs8* C Valid Valid Move byte at (seg:offset) to
AL.
REX.W + A0 MOV AL,moffs8* C Valid N.E. Move byte at (offset) to AL.
A1 MOV AX,moffs16* C Valid Valid Move word at (seg:offset) to
AX.
A1 MOV
EAX,moffs32*
C Valid Valid Move doubleword at
(seg:offset) to EAX.
REX.W + A1 MOV
RAX,moffs64*
C Valid N.E. Move quadword at (offset)
to RAX.
A2 MOV moffs8,AL D Valid Valid Move AL to (seg:offset).
REX.W + A2 MOV moffs8***,AL D Valid N.E. Move AL to (offset).
A3 MOV moffs16*,AX D Valid Valid Move AX to (seg:offset).
A3 MOV
moffs32*,EAX
D Valid Valid Move EAX to (seg:offset).
REX.W + A3 MOV
moffs64*,RAX
D Valid N.E. Move RAX to (offset).
B0+ rb MOV r8, imm8 E Valid Valid Move imm8 to r8.
REX + B0+ rb MOV r8***, imm8 E Valid N.E. Move imm8 to r8.
B8+ rw MOV r16, imm16 E Valid Valid Move imm16 to r16.
B8+ rd MOV r32, imm32 E Valid Valid Move imm32 to r32.
REX.W + B8+ rd MOV r64, imm64 E Valid N.E. Move imm64 to r64.
C6 /0 MOV r/m8, imm8 F Valid Valid Move imm8 to r/m8.
REX + C6 /0 MOV r/m8***,
imm8
F Valid N.E. Move imm8 to r/m8.
C7 /0 MOV r/m16,
imm16
F Valid Valid Move imm16 to r/m16.
C7 /0 MOV r/m32,
imm32
F Valid Valid Move imm32 to r/m32.
REX.W + C7 /0 MOV r/m64,
imm32
F Valid N.E. Move imm32 sign extended
to 64-bits to r/m64.
REX.W + A3 MOV
moffs64*,RAX
D Valid N.E. Move RAX to (offset).
B0+ rb MOV r8, imm8 E Valid Valid Move imm8 to r8.
REX + B0+ rb MOV r8***, imm8 E Valid N.E. Move imm8 to r8.
B8+ rw MOV r16, imm16 E Valid Valid Move imm16 to r16.
B8+ rd MOV r32, imm32 E Valid Valid Move imm32 to r32.
REX.W + B8+ rd MOV r64, imm64 E Valid N.E. Move imm64 to r64.
C6 /0 MOV r/m8, imm8 F Valid Valid Move imm8 to r/m8.
REX + C6 /0 MOV r/m8***,
imm8
F Valid N.E. Move imm8 to r/m8.
C7 /0 MOV r/m16,
imm16
F Valid Valid Move imm16 to r/m16.
C7 /0 MOV r/m32,
imm32
F Valid Valid Move imm32 to r/m32.
REX.W + C7 /0 MOV r/m64,
imm32
F Valid N.E. Move imm32 sign extended
to 64-bits to r/m64.

NOTES:
* The moffs8, moffs16, moffs32 and moffs64 operands specify a simple offset relative to the
segment base, where 8, 16, 32 and 64 refer to the size of the data. The address-size attribute
of the instruction determines the size of the offset, either 16, 32 or 64 bits.
** In 32-bit mode, the assembler may insert the 16-bit operand-size prefix with this instruction
(see the following “Description” section for further information).
***In 64-bit mode, r/m8 can not be encoded to access the following byte registers if a REX prefix
is used: AH, BH, CH, DH.

 
  
     
     * 
     */
    
}
